package com.cheetah.start.common.config;

import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * mybatis-plus 实体类字段自动填充配置 fieldName 为实体类名称
 *
 * @author xjhmwj
 * @date 2021/1/8 10:50
 */
@Component
public class FieldFillConfig implements MetaObjectHandler {


    /**
     * 插入填充 异步插入数据库的不要使用自动填充,因为获取不到 request
     *
     * @param metaObject 元对象
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        SaSession saSession = StpUtil.getSession();
        String name = saSession.getString("name");
        this.setFieldValByName("createBy", name, metaObject);

    }

    /**
     * 更新填充 异步更新数据库的不要使用自动填充,因为获取不到 request
     *
     * @param metaObject 元对象
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
        SaSession saSession = StpUtil.getSession();
        String name = saSession.getString("name");
        this.setFieldValByName("updateBy", name, metaObject);
    }
}
